package com.xhs.service;

import java.time.LocalDateTime;

/**
 * @desc: 编号重置规则
 * @projectName: auto-number
 * @author: xhs
 * @date: 2025-03-12 周三 13:41
 * @version: JDK 21
 */
public interface ResetRule {

    /**
     * 生成 Redis Key 的后缀（用于区分不同周期）
     *
     * @param currentTime 当前时间
     * @return String
     */
    String getKeySuffix(LocalDateTime currentTime);

    /**
     * 是否需要重置（例如按天重置则每天触发）
     *
     * @param key         Redis Key
     * @param currentTime 当前时间
     * @return boolean
     */
    boolean isExpired(String key, LocalDateTime currentTime);

    /**
     * 获取过期时间 秒
     *
     * @return long
     */
    long expirationTime();

    /**
     * 获取前一个周期的Key后缀
     *
     * @param currentTime 当前时间
     * @return String
     */
    String getPreviousKeySuffix(LocalDateTime currentTime);
}
